package Abstract;
/*本类用于测试抽象类中的构造方法的用法*/
public class TestAbstractConstructor {
    public static void main(String[] args) {
                //1.多态
               Animal a = new Pig();/**创建多态对象时，分别调用对应的构造方法*/
                //Animal a2 = new Animal();抽象父类不能创建对象，不能实例化！！！
                Pig p = new Pig();/**创建子类对象时，分别调用对应的构造方法*/
    }
}
abstract  class Animal{
    public Animal(){
        System.out.println("我是抽象父类的无参构造方法");
    }
}
class Pig extends Animal{
    public Pig (){
        super();//默认存在super();可删除，可手动显示。默认自动调用父类的无参构造方法，再调用自己的构造方法。
        System.out.println("我是子类的无参构造方法");
    }
}
       /* 抽象类总结:
        * 1.抽象类中可以有构造方法
        * 2.【父类的构造方法】要优先于子类执行。！！！！
        * 3.抽象类不可以创建对象(实例化)
        * 4.抽象类中存在的构造方法，不是为了创建本类对象时调用，而是为了创建子类对象时使用即super（）；！！！！！
        */